package com.linewell.mongodemo.pojo;

import org.hibernate.validator.constraints.Length;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Field;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAttribute;
import java.io.Serializable;
import java.util.Date;


public class LicenseMetadata implements Serializable{

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = -3614303348873055998L;

	/**
	 * 唯一标识
	 */
	@Id
	private String id;

	/**
	 * 文件编号(接口生成)
	 */
	@NotNull
	@Length(min=0,max=255)
	@Field("file_number")
	private String fileNumber;

	/**
	 * 证照名称
	 */
	@NotNull
	@Length(min=0,max=100)
	@Field("license_name")
	private String licenseName;

	/**
	 * 证照编号
	 */
	@NotNull
	@Length(min=0,max=100)
	@Field("license_number")
	private String licenseNumber;

	/**
	 * 颁发时间
	 */
	@Field("issue_date")
	private Date issueDate;

	/**
	 * 有效期起始
	 */
	@Field("valid_time_begin")
	private Date validTimeBegin;

	/**
	 * 有效期截止
	 */
	@Field("valid_time_end")
	private Date validTimeEnd;

	/**
	 * 颁发单位
	 */
	@NotNull
	@Length(min=0,max=100)
	@Field("issue_unit")
	private String issueUnit;

	/**
	 * 持证者
	 */
	@NotNull
	@Length(min=0,max=50)
	@Field("holder")
	private String holder;

	/**
	 * 持证者编码
	 */
	@NotNull
	@Length(min=0,max=100)
	@Field("holder_code")
	private String holderCode;

	/**
	 * 持证者编码类型
	 */
	@NotNull
	@Length(min=0,max=50)
	@Field("holder_code_type")
	private String holderCodType;

	/**
	 * 证照变更记录
	 */
	@NotNull
	@Length(min=0,max=500)
	@Field("change_record")
	private String changeRecord;
	
	/**
	 * 软件环境
	 */
	@Length(min=0,max=255)
	@Field("software_envirement")
	private String softwareEnvirement;
	
	/**
	 * 硬件环境
	 */
	@Length(min=0,max=255)
	@Field("hardware_envirement")
	private String hardwarEnvirement;
	
	/**
	 * 业务行为
	 */
	@Length(min=0,max=255)
	@Field("business_behavior")
	private String businessBehavior;
	
	/**
	 * 证照废止信息
	 */
	@Length(min=0,max=255)
	@Field("abolish_information")
	private String abolishInformation;
	
	/**
	 * 电子签章信息
	 */
	@Length(min=0,max=255)
	@Field("sign_information")
	private String signInformation;
	
	/**
	 * 数字证书信息
	 */
	@Length(min=0,max=255)
	@Field("digital_cert_infomation")
	private String digitalCertInfomation;
	
	/**
	 * 证照数据电文信息查询地址
	 */
	@Length(min=0,max=255)
	@Field("digital_teleinfo_query_addr")
	private String digitalTeleinfoQueryAddr;
	
	/**
	 * 证照废止列表地址
	 */
	@Length(min=0,max=255)
	@Field("abolish_addr")
	private String abolishAddr;
	
	/**
	 * 证照版本
	 */
	@Length(min=0,max=255)
	@Field("license_version")
	private String licenseVersion;
	
	/**
	 * 访问权限控制
	 */
	@Length(min=0,max=255)
	@Field("access_control")
	private String accessControl;
	
	/**
	 * 主题词
	 */
	@Length(min=0,max=255)
	@Field("subject_word")
	private String subjectWord;
	
	/**
	 * 共享范围
	 */
	@Length(min=0,max=500)
	@Field("share_scope")
	private String shareScope;
	
	/**
	 * 来源
	 */
	@Length(min=0,max=255)
	@Field("origin")
	private String origin;
	
	/**
	 * 密级
	 */
	@Length(min=0,max=255)
	@Field("dense")
	private String dense;
	
	/**
	 * 语言
	 */
	@Length(min=0,max=255)
	@Field("language")
	private String language;

	/**
	 * 电子证照文件id
	 */
	@Length(min=0,max=255)
	@Field("file_id")
	private String fileId;

	/**
	 * 编号格式(对应文号格式)
	 */
	@Length(min=0,max=255)
	@Field("number_format")
	private String numberFormat;

	/**
	 * 证照类型（1-证照;0-批文）
	 */
	@NotNull
	@Min(0) 
	@Max(3) 
	@Field("type")
	private Integer type;

	/**
	 * 证照检索关键字
	 */
	@Length(min=0,max=255)
	@Field("sort_keyword")
	private String sortKeyword;

	/**
	 * 提取码
	 */
	@Length(min=0,max=255)
	@Field("abstract_code")
	private String abstractCode;

	/**
	 * 证照受限列表地址
	 */
	@Length(min=0,max=255)
	@Field("limit_addr")
	private String limitAddr;

	/**
	 * 证照在线查询地址
	 */
	@Length(min=0,max=255)
	@Field("online_query_addr")
	private String onlineQueryAddr;

	/**
	 * 证照在线验证地址
	 */
	@Length(min=0,max=255)
	@Field("online_verify_addr")
	private String onlineVerifyAddr;
	
	/***
	 * 批文文号-由福建接口提供的字段，使用不详 20170221
	 */
	@Field("license_symbol_format")
	private String licenseSymbolFormat;
	

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getFileNumber() {
		return fileNumber;
	}

	public void setFileNumber(String fileNumber) {
		this.fileNumber = fileNumber;
	}

	public String getLicenseName() {
		return licenseName;
	}

	public void setLicenseName(String licenseName) {
		this.licenseName = licenseName;
	}

	public String getLicenseNumber() {
		return licenseNumber;
	}

	public void setLicenseNumber(String licenseNumber) {
		this.licenseNumber = licenseNumber;
	}



	public Date getIssueDate() {
		return issueDate;
	}

	public void setIssueDate(Date issueDate) {
		this.issueDate = issueDate;
	}

	public Date getValidTimeBegin() {
		return validTimeBegin;
	}

	public void setValidTimeBegin(Date validTimeBegin) {
		this.validTimeBegin = validTimeBegin;
	}

	public Date getValidTimeEnd() {
		return validTimeEnd;
	}

	public void setValidTimeEnd(Date validTimeEnd) {
		this.validTimeEnd = validTimeEnd;
	}

	public String getIssueUnit() {
		return issueUnit;
	}

	public void setIssueUnit(String issueUnit) {
		this.issueUnit = issueUnit;
	}

	public String getHolder() {
		return holder;
	}

	public void setHolder(String holder) {
		this.holder = holder;
	}

	public String getHolderCode() {
		return holderCode;
	}

	public void setHolderCode(String holderCode) {
		this.holderCode = holderCode;
	}

	public String getHolderCodType() {
		return holderCodType;
	}

	public void setHolderCodType(String holderCodType) {
		this.holderCodType = holderCodType;
	}

	public String getChangeRecord() {
		return changeRecord;
	}

	public void setChangeRecord(String changeRecord) {
		this.changeRecord = changeRecord;
	}

	public String getSoftwareEnvirement() {
		return softwareEnvirement;
	}

	public void setSoftwareEnvirement(String softwareEnvirement) {
		this.softwareEnvirement = softwareEnvirement;
	}

	public String getHardwarEnvirement() {
		return hardwarEnvirement;
	}

	public void setHardwarEnvirement(String hardwarEnvirement) {
		this.hardwarEnvirement = hardwarEnvirement;
	}

	public String getBusinessBehavior() {
		return businessBehavior;
	}

	public void setBusinessBehavior(String businessBehavior) {
		this.businessBehavior = businessBehavior;
	}

	public String getAbolishInformation() {
		return abolishInformation;
	}

	public void setAbolishInformation(String abolishInformation) {
		this.abolishInformation = abolishInformation;
	}

	public String getSignInformation() {
		return signInformation;
	}

	public void setSignInformation(String signInformation) {
		this.signInformation = signInformation;
	}

	public String getDigitalCertInfomation() {
		return digitalCertInfomation;
	}

	public void setDigitalCertInfomation(String digitalCertInfomation) {
		this.digitalCertInfomation = digitalCertInfomation;
	}

	public String getDigitalTeleinfoQueryAddr() {
		return digitalTeleinfoQueryAddr;
	}

	public void setDigitalTeleinfoQueryAddr(String digitalTeleinfoQueryAddr) {
		this.digitalTeleinfoQueryAddr = digitalTeleinfoQueryAddr;
	}

	public String getAbolishAddr() {
		return abolishAddr;
	}

	public void setAbolishAddr(String abolishAddr) {
		this.abolishAddr = abolishAddr;
	}

	public String getLicenseVersion() {
		return licenseVersion;
	}

	public void setLicenseVersion(String licenseVersion) {
		this.licenseVersion = licenseVersion;
	}

	public String getAccessControl() {
		return accessControl;
	}

	public void setAccessControl(String accessControl) {
		this.accessControl = accessControl;
	}

	public String getSubjectWord() {
		return subjectWord;
	}

	public void setSubjectWord(String subjectWord) {
		this.subjectWord = subjectWord;
	}

	public String getShareScope() {
		return shareScope;
	}

	public void setShareScope(String shareScope) {
		this.shareScope = shareScope;
	}

	public String getOrigin() {
		return origin;
	}

	public void setOrigin(String origin) {
		this.origin = origin;
	}

	public String getDense() {
		return dense;
	}

	public void setDense(String dense) {
		this.dense = dense;
	}

	public String getLanguage() {
		return language;
	}

	public void setLanguage(String language) {
		this.language = language;
	}

	public String getFileId() {
		return fileId;
	}

	public void setFileId(String fileId) {
		this.fileId = fileId;
	}

	public String getNumberFormat() {
		return numberFormat;
	}

	public void setNumberFormat(String numberFormat) {
		this.numberFormat = numberFormat;
	}
	@XmlAttribute(name="dd") 
	public Integer getType() {
		return type;
	}

	public void setType(Integer type) {
		this.type = type;
	}

	public String getSortKeyword() {
		return sortKeyword;
	}

	public void setSortKeyword(String sortKeyword) {
		this.sortKeyword = sortKeyword;
	}

	public String getAbstractCode() {
		return abstractCode;
	}

	public void setAbstractCode(String abstractCode) {
		this.abstractCode = abstractCode;
	}

	public String getLimitAddr() {
		return limitAddr;
	}

	public void setLimitAddr(String limitAddr) {
		this.limitAddr = limitAddr;
	}

	public String getOnlineQueryAddr() {
		return onlineQueryAddr;
	}

	public void setOnlineQueryAddr(String onlineQueryAddr) {
		this.onlineQueryAddr = onlineQueryAddr;
	}

	public String getOnlineVerifyAddr() {
		return onlineVerifyAddr;
	}

	public void setOnlineVerifyAddr(String onlineVerifyAddr) {
		this.onlineVerifyAddr = onlineVerifyAddr;
	}

	public String getLicenseSymbolFormat() {
		return licenseSymbolFormat;
	}

	public void setLicenseSymbolFormat(String licenseSymbolFormat) {
		this.licenseSymbolFormat = licenseSymbolFormat;
	}

}
